﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
using DAO;
using DTO;
using System.Collections;

namespace QLKS
{
    public partial class frmCapNhatPhieuThue : Form
    {
        public frmCapNhatPhieuThue()
        {
            InitializeComponent();
        }
        private void LoadListview()
        {
            lvDSMaPhieuThue.Items.Clear();

            DataTable dt = PhieuThuePhongBUS.PhieuThuePhongChuaThanhToan();

            foreach (DataRow dr in dt.Rows)
            {
                ListViewItem lv = new ListViewItem(dr["MaPhieuThue"].ToString());

                for (int i = 1; i < dt.Columns.Count; i++)
                {
                    lv.SubItems.Add(dr[i].ToString());
                }
                lvDSMaPhieuThue.Items.Add(lv);
            }
        }

        private void frmCapNhatPhieuThue_Load(object sender, EventArgs e)
        {
            LoadListview();
            dtpNgayBatDau.Enabled = false;
            txtDonGia.Enabled = false;
            txtMaPhieuThue.Enabled = false;
            txtTenPhong.Enabled = false;
        }

        private void lvDSMaPhieuThue_SelectedIndexChanged(object sender, EventArgs e)
        {
            foreach (ListViewItem lv in lvDSMaPhieuThue.SelectedItems)
            {
                txtMaPhieuThue.Text = lv.SubItems[0].Text;
                txtTenPhong.Text = lv.SubItems[1].Text;
                txtDonGia.Text = lv.SubItems[2].Text;
                dtpNgayBatDau.Text = lv.SubItems[3].Text;
                dtpNgayKetThuc.Text = lv.SubItems[4].Text;
                lvDSKhachTheoMPT.Items.Clear();
                DataTable dt = KhachHangBUS.DSKhachHangTheoMaPhieuThue(int.Parse(txtMaPhieuThue.Text));
                foreach (DataRow dr in dt.Rows)
                {
                    ListViewItem lv1 = new ListViewItem(dr["MaKhachHang"].ToString());

                    for (int i = 1; i < dt.Columns.Count; i++)
                    {
                        lv1.SubItems.Add(dr[i].ToString());
                    }
                    lvDSKhachTheoMPT.Items.Add(lv1);
                }
            }
        }

        private void btnCapNhat_Click(object sender, EventArgs e)
        {
            if (lvDSMaPhieuThue.SelectedItems.Count < 1)
            {
                MessageBox.Show("Bạn chưa chọn phiếu thuê cần cập nhật");
            }
            if (dtpNgayBatDau.Text == "" || dtpNgayKetThuc.Text == "")
            {
                MessageBox.Show("Vui lòng điền đủ thông tin");
                return;
            }
            else
            {
                DateTime dt1 = Convert.ToDateTime(dtpNgayBatDau.Text);
                DateTime dt2 = Convert.ToDateTime(dtpNgayKetThuc.Text);
                TimeSpan dt3 = dt2 - dt1;
                if (dt3.TotalDays <= 0)
                {
                    MessageBox.Show("Ngày kết thúc phải sau ngày bắt đầu");
                    return;
                }
            }
            DataTable dt5 = ThamSoDAO.GetAll();
            int sokhachtheodongia = int.Parse(dt5.Rows[0].ItemArray[0].ToString());

            DataTable dt7 = LoaiPhongDAO.LoaiPhongTheoTenPhong(txtTenPhong.Text);//dt3
            int sokhachtoida = int.Parse(dt7.Rows[0].ItemArray[0].ToString());
            int sokhach = lvDSKhachTheoMPT.Items.Count;
            ArrayList arrLoaiKhach = new ArrayList();
            ArrayList arr = new ArrayList();
            for (int j = 0; j < lvDSKhachTheoMPT.Items.Count; j++)
            {
                int ma = int.Parse(lvDSKhachTheoMPT.Items[j].SubItems[0].Text);
                DataTable dt = KhachHangBUS.GetTheoMa(ma);
                int flag = 0;
                for (int i = 0; i < arrLoaiKhach.Count; i++)
                {
                    int a = int.Parse(arrLoaiKhach[i].ToString());
                    int b = int.Parse(dt.Rows[0].ItemArray[0].ToString());
                    if (a == b)
                    {
                        flag = 1;
                        break;
                    }
                }
                if (flag == 0)
                {
                    arrLoaiKhach.Add(dt.Rows[0].ItemArray[0].ToString());
                }
                arr.Add(ma);
            }

            DateTime start_date = DateTime.Parse(dtpNgayBatDau.Text);
            DateTime end_date = DateTime.Parse(dtpNgayKetThuc.Text);
            TimeSpan span = end_date.Subtract(start_date);

            DataTable dt8 = PhieuThuePhongDAO.GetAll();
            PhieuThuePhongDTO pt = new PhieuThuePhongDTO();
            pt.MaPhieuThue = int.Parse(txtMaPhieuThue.Text);
            pt.DonGia = float.Parse(txtDonGia.Text);
            pt.SoNgayThue = span.Days;
            pt.NgayKetThuc = DateTime.Parse(dtpNgayKetThuc.Text);

            if (sokhach > sokhachtheodongia)
            {
                DataTable dt4 = PhuThuDAO.LayTyLePhuThu(sokhach);
                float tyle = float.Parse(dt4.Rows[0].ItemArray[2].ToString());
                pt.ThanhTien = (pt.DonGia * pt.SoNgayThue) + ((pt.DonGia * pt.SoNgayThue) * tyle);
                for (int i = 0; i < arrLoaiKhach.Count; i++)
                {
                    DataTable dt6 = LoaiKhachHangDAO.HeSoLoaiKhachTheoMaLoai(int.Parse(arrLoaiKhach[i].ToString()));
                    DataRow dr6 = dt6.Rows[0];
                    pt.ThanhTien = pt.ThanhTien * float.Parse(dr6["HeSoLoaiKhach"].ToString());
                }
            }
            if (sokhach <= sokhachtheodongia)
            {
                pt.ThanhTien = pt.DonGia * pt.SoNgayThue;
                for (int i = 0; i < arrLoaiKhach.Count; i++)
                {
                    DataTable dt6 = LoaiKhachHangDAO.HeSoLoaiKhachTheoMaLoai(int.Parse(arrLoaiKhach[i].ToString()));
                    DataRow dr6 = dt6.Rows[0];
                    pt.ThanhTien = pt.ThanhTien * float.Parse(dr6["HeSoLoaiKhach"].ToString());
                }
            }

            if (MessageBox.Show("Bạn Có Muốn Cập Nhật Phiêu Thuê Phòng?", "Thông báo", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                PhieuThuePhongDAO.CapNhatPhieuThuePhong(pt.MaPhieuThue, pt.NgayKetThuc, pt.SoNgayThue, pt.ThanhTien);
            }
            else
            {
                return;
            }
            MessageBox.Show("Cập Nhật Phiếu Thuê Phòng Thành Công", "Thông báo");
            LoadListview();
        }
    }
}
